#include <stdio.h>


// 二维数组参数传递   通过固定列 传参
void show_arr(int arr[][3] , int lin)
{
    for (size_t i = 0; i < lin; i++)
    {
        for (size_t j = 0; j < 3; j++)
        {
            printf("%d \t" , arr[i][j]);
        }
        puts("");
        
    }
}

// 二维数组传参  指针传递参数
// lin  行
// cols 列
void show_arr_1(int * arr ,  int lin , int cols)
{
    for (size_t i = 0; i < lin; i++)
    {
        for (size_t j = 0; j < cols; j++)
        {
            printf("%d \t" , *(arr + i * cols + j ));
        }
        puts("");
        
    }
    // arr 原始地址
    //   i * cols   一行
    //   j           列偏移

    
}

int main(int argc, char const *argv[])
{
    int arr_1[3][3] = {
        {1 , 2 , 3},
        {4 , 5 , 6},
        {7 , 8 , 9},
    };

    show_arr(arr_1 , sizeof(arr_1) / sizeof(arr_1[0]));
    show_arr_1(&arr_1[0][0] , sizeof(arr_1) / sizeof(arr_1[0]) , sizeof(arr_1[0]) / sizeof(int));
    return 0;
}

